270 dwt 2 master.aspx
<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="doc.master" %>

<asp:Content ID="Content1" runat="Server" ContentPlaceHolderID="ContentPlaceHolder1">

    <h1>Dynamische
Webvorlage in Master-Page umwandeln</h1>

    <p>
        Eine dynamische Webvorlage
            erzeugt den Kode aus dem sie besteht so oft als es Seiten gibt, die diesen Kode
            benötigen, also alle Seiten eines Webs.
    </p>

    <p>
        Wenn man eine Änderung der Webvorlage
            durchführt, muss man diese Änderung auf alle anderen Seiten übertragen.
    </p>

    <p>
        Im Prinzip enthält eine
            Master-Page den Kode der Webvorlage aber die einzelnen Detailseiten enthalten
            nur den Inhalt, der sie von der Master-Seite unterscheidet.
    </p>

    <p>
        Der eigentliche Vorteil der
            Masterseiten ist, dass sie nicht nur JavaScript-Kode enthalten können, sondern
            auch Kode, der an Server ausgeführt wird. Und damit werden Aufgaben wie
            Formular-Versand, Inklusion von Dateien, Login usw. möglich.
    </p>

    <ul>
        <li><b>Schritt</b> 1: Paket auswählen: „Daffodil Garden.fwp“
        </li>
        <li><b>Schritt</b> 2: Neue Site öffnen, leere Site
        </li>
        <li><b>Schritt</b> 3: Site -> Importieren -> Von Webpaket importieren
        </li>
        <li><b>Schritt</b> 4: Umbenennen aller Seiten von html in aspx. Dabei werden die
            Links an allen betroffenen Stellen ebenfalls umbenannt. Die Seiten können nach
            wie vor unverändert im Browser über <code>Datei -> Browservorschau </code>betrachtet
            werden aber nicht mehr durch Aufruf am Desktop.
        </li>
        <li><b>Schritt</b> 5: <code>Datei -> Neu –> Seite Allgemeine -> Masterseite „site.master“</code>
        </li>
        <li><b>Schritt</b> 6: Löschen der Tags <code>title</code> und <code>meta content</code> aus <code>site.master</code>.
        </li>
        <li><b>Schritt</b> 7: Aus der Datei <code>site.dwt</code>
            kopiert man den Head-Teil in den Head-Teil von <code>site.master</code>.
            Die doppelt vorkommenden Tags <code>content</code> und <code>title</code>
            entfernt man. Im Pfad des Stylesheets muss man „../“
            entfernen, weil sich die MasterDatei im
            Wurzelverzeichnis befindet.
        </li>
        <li><b>Schritt</b> 8: Ebenso kopiert man den Body-Teil aus site.dwt innerhalt des Tags <code>form</code>.
            Den Bereich <code><!-- #BeginEditable
            "content" -->---<!-- #EndEditable --></code> ersetzt man durch den Tag 
            <code>ContentPlaceholder</code>.
        </li>
        <li><b>Schritt</b> 9: Verzeichnis <code>dwt</code> kann inklusive der Datei <code>site.dwt</code> gelöscht werden
        </li>
        <li><b>Schritt</b> 10: Eine erste Seite erstellen, die auf
            dieser Master-Seite beruht: <code>Datei -> Neu -> Aus Masterseite erstellen
            -> Spezifische Masterseite -> „site.master“</code>
            auswählen und als „test“ speichern. Das Ergebnis ist
            eine Seite test.aspx mit einer einzigen Zeile <code><%@ Page language="C#"
            masterpagefile="site.master"
            title="Site Name" %> </code>
            <br />
            Wir ergänzen durch die Tags 
                <code><asp:Content ContentPlaceHolderID="Head" Runat="Server"></asp:Content><asp:Content ContentPlaceHolderID="Content"
            Runat="Server"></asp:Content></code>.
            Dieses Fragment ist die Grundlage für alle folgenden Seiten. Der eigentliche
            Content kommt in die beiden
        </li>
        <li><b>Schritt</b> 11: Umwandeln aller ASPX-Seiten am
            Beispiel about.aspx.
            <ul>
                <li><b>Schritt</b> 1: Einfügung des Textfragments am Kopf der Seite einfügen. Damit wird der Rest
                    der Seite als fehlerhaft markiert. Ändern von „Site-Name“ in „about“. Der Head-Content bleibt leer-
                </li>
                <li><b>Schritt</b> 2: Alles auf der Seite löschen mit Ausnahme von <code><h1>About</h1></code>
                    und dem folgenden Absatz. Noch immer ist alles als fehlerhaft markiert.
                </li>
                <li><b>Schritt</b> 3: Einfügung des „About“-Kodefragments in diesen Tag.
                    In den Tag ContentPlaceHolder.
                </li>
            </ul>
        </li>
    </ul>

    <h2>Hinweis</h2>

    <p>
        Wenn
        die Dynamische Webvorlage in einem Unterverzeichnis war, die Masterseite aber
        im Wurzelverzeichnis, dann sind die Links in der Masterseite fehlerhaft. Es
        steht dort zum Beispiel „../index.html“. Richtig ist
        aber „index.html“. Diese Links in der Masterseite muss man korrigieren.
    </p>

    <h2>Besondere Seiten</h2>

    <p>
        Seiten, die auch einen geänderten
        Kopfteil benötigen, dort muss man die weiteren Kopfzeilen in den ContentPlaceHolder „Head“ kopieren.
    </p>

    <p>
        Wenn es auf einer Dynamischen
        Webvorlage mehr als nur einen Content-Bereich gibt, muss man diese zusätzlichen
        Content-Bereiche in weiteren ContentPlaceHoldern
        verpacken, die man mit einer anderen ID versehen muss.
    </p>

</asp:Content>